using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._ModelTools._ModelOnly
{
    /// <summary>
    /// <para>If Data Exists</para>
    /// <para>Evaluates if the specified data exists.</para>
    /// <para>计算指定的数据是否存在。</para>
    /// </summary>    
    [DisplayName("If Data Exists")]
    public class DataExistsIfThenElse : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public DataExistsIfThenElse()
        {

        }
        public override string ToolboxName => "Model Tools";

        public override string ToolName => "If Data Exists";

        public override string CallName => "mb.DataExistsIfThenElse";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_data, _data_type.GetGPValue(), _true, _false];

        /// <summary>
        /// <para>Input Data Element</para>
        /// <para>Input data element to be evaluated.</para>
        /// <para>要计算的输入数据元素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Data Element")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_data { get; set; } = null;


        /// <summary>
        /// <para>Data Type</para>
        /// <para><xdoc>
        ///   <para>The data type of the data element being evaluated. The only time you need to provide a value is when a geodatabase contains a feature dataset and a feature class or table with the same name. In this case, you need to select the data type (feature dataset, feature class or table) of the item you want to evaluate.</para>
        ///   <bulletList>
        ///     <bullet_item>Any—Any Value. This is the default.</bullet_item><para/>
        ///     <bullet_item>Feature Dataset—Feature Dataset</bullet_item><para/>
        ///     <bullet_item>Feature Class—Feature Class</bullet_item><para/>
        ///     <bullet_item>Table—Table</bullet_item><para/>
        ///     <bullet_item>View—View</bullet_item><para/>
        ///     <bullet_item>Relationship Class—Relationship Class</bullet_item><para/>
        ///     <bullet_item>Raster Dataset—Raster Dataset</bullet_item><para/>
        ///     <bullet_item>Mosaic Dataset—Mosaic Dataset</bullet_item><para/>
        ///     <bullet_item>Toolbox—Toolbox</bullet_item><para/>
        ///     <bullet_item>Topology—Topology</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要计算的数据元素的数据类型。只有当地理数据库包含要素数据集和同名要素类或表时，才需要提供值。在这种情况下，您需要选择要评估的项目的数据类型（要素数据集、要素类或表）。</para>
        ///   <bulletList>
        ///     <bullet_item>任意 - 任意值。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>要素数据集 - 要素数据集</bullet_item><para/>
        ///     <bullet_item>要素类 - 要素类</bullet_item><para/>
        ///     <bullet_item>表 （Table） - 表</bullet_item><para/>
        ///     <bullet_item>视图 （View） - 视图</bullet_item><para/>
        ///     <bullet_item>关系类 - 关系类</bullet_item><para/>
        ///     <bullet_item>栅格数据集 - 栅格数据集</bullet_item><para/>
        ///     <bullet_item>镶嵌数据集 - 镶嵌数据集</bullet_item><para/>
        ///     <bullet_item>工具箱 - 工具箱</bullet_item><para/>
        ///     <bullet_item>拓扑 - 拓扑</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Data Type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _data_type_value _data_type { get; set; } = _data_type_value._ANY;

        public enum _data_type_value
        {
            /// <summary>
            /// <para>Any</para>
            /// <para>Any—Any Value. This is the default.</para>
            /// <para>任意 - 任意值。这是默认设置。</para>
            /// </summary>
            [Description("Any")]
            [GPEnumValue("ANY")]
            _ANY,

            /// <summary>
            /// <para>Feature Dataset</para>
            /// <para>Feature Dataset—Feature Dataset</para>
            /// <para>要素数据集 - 要素数据集</para>
            /// </summary>
            [Description("Feature Dataset")]
            [GPEnumValue("DEFeatureDataset")]
            _DEFeatureDataset,

            /// <summary>
            /// <para>Feature Class</para>
            /// <para>Feature Class—Feature Class</para>
            /// <para>要素类 - 要素类</para>
            /// </summary>
            [Description("Feature Class")]
            [GPEnumValue("DEFeatureClass")]
            _DEFeatureClass,

            /// <summary>
            /// <para>Table</para>
            /// <para>Table—Table</para>
            /// <para>表 （Table） - 表</para>
            /// </summary>
            [Description("Table")]
            [GPEnumValue("DETable")]
            _DETable,

            /// <summary>
            /// <para>View</para>
            /// <para>View—View</para>
            /// <para>视图 （View） - 视图</para>
            /// </summary>
            [Description("View")]
            [GPEnumValue("DEView")]
            _DEView,

            /// <summary>
            /// <para>Relationship Class</para>
            /// <para>Relationship Class—Relationship Class</para>
            /// <para>关系类 - 关系类</para>
            /// </summary>
            [Description("Relationship Class")]
            [GPEnumValue("DERelationshipClass")]
            _DERelationshipClass,

            /// <summary>
            /// <para>Raster Dataset</para>
            /// <para>Raster Dataset—Raster Dataset</para>
            /// <para>栅格数据集 - 栅格数据集</para>
            /// </summary>
            [Description("Raster Dataset")]
            [GPEnumValue("DERasterDataset")]
            _DERasterDataset,

            /// <summary>
            /// <para>Mosaic Dataset</para>
            /// <para>Mosaic Dataset—Mosaic Dataset</para>
            /// <para>镶嵌数据集 - 镶嵌数据集</para>
            /// </summary>
            [Description("Mosaic Dataset")]
            [GPEnumValue("DEMosaicDataset")]
            _DEMosaicDataset,

            /// <summary>
            /// <para>Toolbox</para>
            /// <para>Toolbox—Toolbox</para>
            /// <para>工具箱 - 工具箱</para>
            /// </summary>
            [Description("Toolbox")]
            [GPEnumValue("DEToolbox")]
            _DEToolbox,

            /// <summary>
            /// <para>Topology</para>
            /// <para>Topology—Topology</para>
            /// <para>拓扑 - 拓扑</para>
            /// </summary>
            [Description("Topology")]
            [GPEnumValue("DETopology")]
            _DETopology,

        }

        /// <summary>
        /// <para>True</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("True")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _true { get; set; }


        /// <summary>
        /// <para>False</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("False")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _false { get; set; }


        public DataExistsIfThenElse SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}